﻿using System;

namespace XEvolve.Core.Runtime
{
    public interface IExtensionRegistry
    {        
        void RegisterExtensionPoint(object identifier);
        void RegisterExtensionPoint(object identifier, bool isExtensionSingleton);
        IExtensionPoint GetExtensionPoint(object identifier);

        void RegisterExtension(object extensionPointIdentifier, object extensionIdentifier, object extensionInstance);
        void RegisterExtension(object extensionPointIdentifier, object extensionIdentifier, Type extensionType);

        void RegisterExtension(object extensionPointIdentifier, object extensionInstance);
        void RegisterExtension(object extensionPointIdentifier, Type extensionType);
    }
}